<?php

class Application_Form_Imie extends Zend_Form
{

	public $url='';
	public $walidacja_komunikaty='';
	
	public function __construct($url='')
	{
		parent::__construct(); //straciłem na tymn godzine bo nie dalem wywolania rodzica w konstruktorze
		$this->url=$url;
	}
	
    public function init()
    {
    	# cały ten kod może też być w konstrukorze
    	
        $this->setMethod('post');
        $this->setAction($this->url); // ustawiam gdzie ma byc wysłany formularz. String kontroler/akcja
        $this->addElement('text', 'imie', array('label' => 'Imię'));

        // inna metoda dodawania nowego elementu formularza
        $element= new Zend_Form_Element_Text('nazwisko',array('label'=>'Nazwisko:'));
        
        # dodawanie filtru z wykorzystaniem wzorca STRATEGIA
        $element->addFilter( new Zend_Filter_Alpha() );// filtr wycina wszystkie znaki poza literami
        # TODO 2-2-2012polskie litery nie dzialaja, moze da sie regexa zmienic , napisac ect
        
        # przykład uzycia walidatora
        	//$element->addValidator( new Zend_Validate_NotEmpty() );
	        //$element->getValidator('NoEmpty')->setMessages( array(Zend_Validate_NotEmpty::IS_EMPTY=>'Tytul nie moze byc pusty.'));
	        # w set message ustawiajac komunikaty przyjmuje tablice klucz to nazwa sprawdzanej rzeczy - stala val- komunikat.
	        
	        $validator_2 = new Zend_Validate_StringLength();
	        $validator_2->setMin(4);
	        // ustawiam jedna wiadomosc (jest tez metoda setMeseges) przyjmuje klucz  i tresc oczywiste ALE
	        // podalem jako klucz wartosc stala zapisana w klasie walidatora, dzieki temu w calej aplikacji blendy tego typu maja taki sam klucz !
	        $validator_2->setMessage(array(Zend_Validate_StringLength::TOO_SHORT=>'Podana nazwa jest z krotka.'));
	        
	        $element->addValidator( $validator_2 );
        
        
        $this->addElement($element);
        
        $this->addElement('submit', 'submit', array('label' => 'Zapisz'));
        
        # sprawdznie czy podana tablica zawiera poprawne dane. Po wywołąniu metody dane przeslane zostana umieszczone w formularzu
        //$this->isValid($data);
        
        # kod poczadzacy z ZemdCastu
        /*
        $this->setDecorators(
        						array('FormElements',
        											array('HtmlTag', 
        															array('tag'=>'dl')
        											),
        											'Form'
        								)
        						);*/
    }

}